package com.ruoyi.project.oms.paeaAuAuditGroupDeptRel.service.impl;

import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.project.oms.paeaAuAuditGroupDeptRel.domain.PaeaAuAuditGroupDeptRel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.project.oms.paeaAuAuditGroupDeptRel.mapper.PaeaAuAuditGroupDeptRelMapper;
import com.ruoyi.project.oms.paeaAuAuditGroupDeptRel.service.IPaeaAuAuditGroupDeptRelService;
import com.ruoyi.common.utils.text.Convert;
import lombok.extern.slf4j.Slf4j;
import java.util.Arrays;
import com.google.common.collect.Lists;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.ruoyi.common.utils.StringUtils;

/**
 * 监控机构分配Service业务层处理
 *
 * @author ruoyi
 * @date 2020-03-31
 */
@Service
@Slf4j
public class PaeaAuAuditGroupDeptRelServiceImpl extends ServiceImpl<PaeaAuAuditGroupDeptRelMapper, PaeaAuAuditGroupDeptRel> implements IPaeaAuAuditGroupDeptRelService
{
    @Autowired
    private PaeaAuAuditGroupDeptRelMapper paeaAuAuditGroupDeptRelMapper;

    /**
     * 查询监控机构分配
     *
     * @param id 监控机构分配ID
     * @return 监控机构分配
     */
    @Override
    public PaeaAuAuditGroupDeptRel selectPaeaAuAuditGroupDeptRelById(String id)
    {
        return paeaAuAuditGroupDeptRelMapper.selectPaeaAuAuditGroupDeptRelById(id);
    }

    /**
     * 查询监控机构分配列表
     *
     * @param paeaAuAuditGroupDeptRel 监控机构分配
     * @return 监控机构分配
     */
    @Override
    public List<PaeaAuAuditGroupDeptRel> selectPaeaAuAuditGroupDeptRelList(PaeaAuAuditGroupDeptRel paeaAuAuditGroupDeptRel)
    {
        return paeaAuAuditGroupDeptRelMapper.selectPaeaAuAuditGroupDeptRelList(paeaAuAuditGroupDeptRel);
    }

    /**
     * 新增监控机构分配
     *
     * @param paeaAuAuditGroupDeptRel 监控机构分配
     * @return 结果
     */
    @Override
    public int insertPaeaAuAuditGroupDeptRel(PaeaAuAuditGroupDeptRel paeaAuAuditGroupDeptRel)
    {
        return paeaAuAuditGroupDeptRelMapper.insertPaeaAuAuditGroupDeptRel(paeaAuAuditGroupDeptRel);
    }

    /**
     * 修改监控机构分配
     *
     * @param paeaAuAuditGroupDeptRel 监控机构分配
     * @return 结果
     */
    @Override
    public int updatePaeaAuAuditGroupDeptRel(PaeaAuAuditGroupDeptRel paeaAuAuditGroupDeptRel)
    {
        return paeaAuAuditGroupDeptRelMapper.updatePaeaAuAuditGroupDeptRel(paeaAuAuditGroupDeptRel);
    }

    /**
     * 删除监控机构分配对象
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deletePaeaAuAuditGroupDeptRelByIds(String ids)
    {
        return paeaAuAuditGroupDeptRelMapper.deletePaeaAuAuditGroupDeptRelByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除监控机构分配信息
     *
     * @param id 监控机构分配ID
     * @return 结果
     */
    @Override
    public int deletePaeaAuAuditGroupDeptRelById(String id)
    {
        return paeaAuAuditGroupDeptRelMapper.deletePaeaAuAuditGroupDeptRelById(id);
    }

    @Override
    public List<PaeaAuAuditGroupDeptRel> selectPaeaAuAuditGroupDeptRelListByGroupId(String groupId) {
        return paeaAuAuditGroupDeptRelMapper.selectPaeaAuAuditGroupDeptRelListByGroupId(groupId);
    }

    @Override
    public List<PaeaAuAuditGroupDeptRel> auditGroupAssignDeptConfigSave(String groupId, String ids) {
        if (!StringUtils.isNull(groupId)) {
            this.remove(new UpdateWrapper<PaeaAuAuditGroupDeptRel>().eq("group_id", groupId));
        }
        List<PaeaAuAuditGroupDeptRel> paeaAuAuditGroupDeptRelList = Lists.newArrayList();
        if (!StringUtils.isEmpty(ids)) {
            Arrays.stream(Convert.toStrArray(ids)).forEach(id -> {
                PaeaAuAuditGroupDeptRel paeaAuAuditGroupDeptRel = new PaeaAuAuditGroupDeptRel();
                paeaAuAuditGroupDeptRel.setGroupId(groupId);
                paeaAuAuditGroupDeptRel.setAuditDept(id);
                paeaAuAuditGroupDeptRelList.add(paeaAuAuditGroupDeptRel);
            });
            this.saveBatch(paeaAuAuditGroupDeptRelList);
            int addCount = paeaAuAuditGroupDeptRelList.size();
            log.info(String.format("监控小组机构分配成功：insert[%s]", addCount));
        }
        return paeaAuAuditGroupDeptRelList;
    }
}
